# 嵌套函数：函数里面还有函数
# 递归函数：嵌套函数，调用的是自己本身(只是一种解决方案，不强求)  --斐波那契数列
# 把一个大的思想拆分成小的(把函数当成一个整体)
# 定义比较简单，逻辑清晰
# def funa():
#     funa()
# funa()
# 死循环(条件跳出递归--出口)
"""
递归函数：
1.函数内部自己调用自己
2.一定要有出口(循环的break)
"""
# 用递归实现3以内的数字累加和 提取函数
# 1+2+3=6
# 6=3以内的数字累加和(整体)
# 6=3+2以内数字累加和
# 2以内的数字累加和=2+1以内的数字累加和
# 1以内的数字累加和=1
"""
1.明确函数要做什么--求和+ sums+=i 最终和值+变量
2.寻找递归条件--出口
3.函数的等价关系式
"""
# 参数
def sums(num):  # 求..以内的数字累加和和 -- 函数
    # 判断 当num=1还要去调用这个函数吗？ 出口
    if num ==1:
        return 1
    return num + sums(num-1) # 1-1=0 0以内的数字累加和  0-1=-1 -1以内的数字累加和

n = sums(5)
print(n)
# RecursionError: maximum recursion depth exceeded 超出最大的递归深度


